//////////////////////////////////////////////////////////////////////////

#ifndef _LAYER_H_
#define _LAYER_H_

#include <vector>
#include <string>

class Input;
class GUI_Control;
struct SDL_Surface;

class GUI_Layer
{
//////////////////////////////////////////////////////////////////////////

public:

//////////////////////////////////////////////////////////////////////////

    virtual ~GUI_Layer();

    virtual bool Render(SDL_Surface *_mainSurface, bool _repaint);
    virtual void Resize();

    void SetLabelText(int _control, const std::string& _text);
    const std::string& GetLabelText(int _control);
    void SetControlText(int _control, const std::string& _text);
    const std::string& GetControlText(int _control);

    /** Key change handler */
    virtual int OnKeyChanged(Input* _input);


    /** Mouse position change handler */
    virtual int OnMousePositionChanged(Input* _input);


////////////////////////////////////////////////////////////////////////////////

protected:

//////////////////////////////////////////////////////////////////////////

    SDL_Surface *m_Buffer;

    std::vector<GUI_Control *> m_Controls;
    std::vector<GUI_Control *> m_Labels;
    int m_FocusedControl;

//////////////////////////////////////////////////////////////////////////
};


//////////////////////////////////////////////////////////////////////////

#endif

//////////////////////////////////////////////////////////////////////////
